#include "window.h"

#include "./widgetOptions.h"
#include "./zonejeu.h"
#include "../Jeu/partie.h"
#include "../Jeu/carte.h"

#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QDockWidget>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>

#include <QtCore/QDebug>

Window::Window() : QMainWindow() {
    setWindowIcon(QIcon(":/Icones/AppIcon.png"));
    m_tapis = new ZoneJeu();

    setCentralWidget(m_tapis);

    // Menu
    mainMenu = new QMenu (this); // Menu principal
    nouvellePartie = new QAction ("Nouvelle partie", this);
    nouvellePartie->setShortcut(QKeySequence::New);
    quitter = new QAction ("Quitter", this);
    quitter->setShortcut(tr("Ctrl+Q"));

    help = new QMenu (this); // Menu d'aide
    aPropos = new QAction ("A propos", this);

    jeu = new QMenu (this); // Menu des modes de jeu
    preferences = new QAction("&Préférences", this);
    jeu->setTitle(tr("&Options"));
    jeu->addSeparator();
    jeu->addAction(preferences);

    widgetOptions = new WidgetOptions(this, Qt::Window);

    barreMenu = new QMenuBar (this);

    mainMenu->setTitle("&Menu");
    mainMenu->addAction(nouvellePartie);
    mainMenu->addSeparator();
    mainMenu->addAction(quitter);

    help->setTitle("?");
    help->addAction(aPropos);

    // Mise en place des éléments du menu (insertion des menus dans la barre de menus)
    barreMenu->addMenu(mainMenu);
    barreMenu->addMenu(jeu);
    barreMenu->addMenu(help);

    // Barre de status
    m_statusBar = new QStatusBar(this);
    setStatusBar(m_statusBar);

    // Insertion de la barre de menus dans la fenetre 'Window'
    setMenuBar(barreMenu);

    connect(quitter, SIGNAL(triggered()), qApp, SLOT(quit()));
    connect(nouvellePartie, SIGNAL(triggered()), widgetOptions, SLOT(show()));
}

/*! \brief Lancement d'une nouvelle partie solo.

    \param pListeNoms   Liste des noms des joueurs.
    \param pPouce       Booléen pour savoir si l'enchère Pouce sera permise ou non.
*/
void Window::nouvellePartieSolo(QStringList pListeNoms, bool pPouce) {
    Partie::getInstance()->init(pListeNoms, pPouce);
    Partie::getInstance()->launch();
}

/*! \brief Lancement d'une nouvelle partie multijoueur.
*/
void Window::nouvellePartieMultijoueur() {

}

void Window::afficherCarte(QGraphicsPixmapItem *pCarte) {
    m_tapis->afficherCarte(pCarte);
}
